var over = 0;
var action = 0;

var thisPage = {
    first: 0,
    scrollTo: function () {
        $('#gridWrapper').scrollLeft($('#divContent').scrollLeft());
        $('#gridWrapper').scrollTop($('#divContent').scrollTop());
    },
    // 初始化页面
    OnPageLoad: function () {
        $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page", 1);

        thisPage.FetchForPage(1);
    },
    // 得到材料允差类型信息分页数据
    GetFilter: function (pageIndex) {
        if (parseInt(pageIndex) !== 0) {
            $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page", pageIndex);
        }

        var item = {};
        item['Limit'] = parseInt($("#page-size").val());
        item['PageIndex'] = parseInt($("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page"));
        item['TypeName'] = formatNullInputValue($.trim($("#TypeName").val()));

        return JSON.stringify(item);
    },
    //《按钮》显示全部
    FetchAll: function () {
        $("#TypeName").val("");

        thisPage.FetchForPage(1);
    },
    // 得到数据列表信息
    FetchForPage: function (pageIndex) {
        $.ajax({
            type: "POST",
            url: parent.basePath + '/master/material_tolerance_type/fetchForPage.html',
            timeout: 30 * 1000,
            data: thisPage.GetFilter(pageIndex),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            beforeSend: function () {
                // 显示刷新动画
                $("#loading__indicator i").addClass("fa-spin");
                $("#loading__indicator").show();
            }
        }).done(function (data) {
            if (data.Success === true) {
                thisPage.BuildDataTable(data);
            }
        }).fail(function (data) {
            $('#loading').hide();
            ajaxError(data, 1);
        }).always(function ( ) {
            // 隐藏刷新动画
            $("#loading__indicator i").removeClass("fa-spin");
            $("#loading__indicator").hide();
        });
    },
    // 构建数据列表
    BuildDataTable: function (result) {
        // 设置翻页控件
        if (result.TotalPages > 0) {  //总页数
            $("#wrapper__navbar").data("swPagination").options.max_page = result.TotalPages;
        } else {
            $("#wrapper__navbar").data("swPagination").options.max_page = 1;
        }
        if (result.PageIndex > 0) { //当前页数
            $("#wrapper__navbar").data("swPagination").options.current_page = result.PageIndex;
            $("#wrapper__navbar").data("swPagination").setPage(result.PageIndex);
        } else {
            $("#wrapper__navbar").data("swPagination").options.current_page = 1; //当前页数
            $("#wrapper__navbar").data("swPagination").setPage(1);
        }

        $("#tabData01 tbody").empty();
        // 得到数据列表
        result = result.DataList;
        if (result === null) {
            $('#loading').hide();
            return false;
        }
        var content_01 = '';
        if (result.length > 0) {
            for (var i = 0; i < result.length; i++) {
                var id = result[i].typeId;
                content_01 += '<tr _mash_id="' + id + '" >';
                content_01 += '<td class="column__action"><span title="删除" class="trash" onclick="thisPage.DoDelete(' + id + ');"><i class="fa-all fa-trash-o fa-1"></i></span></td>';
                content_01 += '<td class="edited-cell">' + result[i].typeNo + '</td>';
                content_01 += '<td class="edited-cell" style="border-right:none;">' + result[i].typeName + '</td>';
                content_01 += '</tr>';
                $("#tabData01 tbody").append(content_01);
                content_01 = '';
            }
        }
        setOneTableRowColor("tabData01");

        var id = "cellField";
        var name = "_cellField";
        $('#tabData01 tbody tr').find("td.edited-cell").click(function () {
            switch ($(this).index()) {
                default:
                    OnCellClickEvent($(this), id, name, 0);
                    break;
            }
        });

        $(window).resize();               // 防止因为出现滚动条而造成画面显示问题
        $('#loading').hide();
    },
    // 增加操作
    DoInsert: function () {
        thisPage.InsertNewLines();
    },
    // 得到材料允差类型明细
    GetLinesData: function () {
        var jsonInsert = [];
        var jsonUpdate = [];
        var itemResult = {};
        var jsonResult = [];
        // 得到修改过数据
        $('#tabData01 tbody').find("tr").each(function () {
            if ($(this).find("td.dirty").length) {
                var item = {};
                var $row = $(this);

                item['typeId'] = $row.attr('_mash_id');
                item['typeNo'] = $.trim($row.find('td').eq(1).text());
                item['typeName'] = $.trim($row.find('td').eq(2).text());
                item['createdBy'] = $("#UserId").val();
                item['updatedBy'] = $("#UserId").val();

                if (parseInt($row.attr("_mash_id")) === 0) {
                    jsonInsert.push(item);
                } else {
                    jsonUpdate.push(item);
                }
            }
        });
        itemResult['insertList'] = jsonInsert;
        itemResult['updateList'] = jsonUpdate;
        jsonResult.push(itemResult);
        return JSON.stringify(itemResult);
    },
    // 保存
    DoSave: function () {
        //step 1、进行页面验证，失败则返回
        var success_01 = CheckGridInput();
        if (!success_01)
            return;

        //step 2、执行处理
        $.ajax({
            type: "POST",
            url: parent.basePath + "/master/material_tolerance_type/batch/save.html",
            timeout: 30 * 1000,
            data: thisPage.GetLinesData(),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            beforeSend: function () {
            }
        }).done(function (data) {
            if (data > 0) {
                $('#tabData01 tbody').find("td.dirty").removeClass("dirty");
                // 刷新列表
                thisPage.FetchForPage();
                ShowSuccessMessagePanel('保存成功。');
            }
        }).fail(function (data) {
            ajaxError(data, 1);
        }).always(function ( ) {
        });
    },
    // 删除
    DoDelete: function (id) {
        showModal(357, 140, '确认删除', '', null, null, 1, '请问，确定要删除当前记录吗？',
                function () {
                    var instance = {};
                    instance['typeId'] = id;
                    instance['deletedBy'] = $("#UserId").val();

                    $.ajax({
                        type: "POST",
                        url: parent.basePath + "/master/material_tolerance_type/delete.html",
                        timeout: 30 * 1000,
                        data: JSON.stringify(instance),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        beforeSend: function () {
                        }
                    }).done(function (data) {
                        if (data > 0) {
                            var currPage = $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page");
                            // 如果删除的是最后一页的最后一条，并且当前页不是首页,重画页面设为前一页
                            if ((parseInt($('#tabData01 tbody').find('tr').length) === 1) && (currPage > 1)) {
                                thisPage.FetchForPage(currPage - 1);
                            } else {
                                thisPage.FetchForPage(currPage);
                            }
                        }
                        ShowSuccessMessagePanel('删除成功。');
                    }).fail(function (data) {
                        ajaxError(data, 1);
                    }).always(function ( ) {
                    });
                });
    },
    // 添加新行以及新行的操作方式
    InsertNewLines: function () {
        var $newLine = $('<tr class="newLine" _mash_id="0" >' +
                '    <td style="text-align:center;"><span title="删除" class="trash" onclick="thisPage.RemoveNewLine($(this));"><i class="fa-all fa-trash-o fa-1"></i></span></td>' +
                '    <td class="edited-cell"></td>' +
                '    <td class="edited-cell" style="border-right:none;"></td>' +
                '</tr>');
        $('#tabData01 tbody').prepend($newLine);   // 加在前面
        setOneTableRowColor("tabData01");

        var id = "cellField";
        var name = "_cellField";
        $newLine.find("td.edited-cell").click(function () {
            switch ($(this).index()) {
                default:
                    OnCellClickEvent($(this), id, name, 0);
                    break;
            }
        });

        return $newLine;
    },
    RemoveNewLine: function ($self) {
        showModal(333, 140, '删除确认', '', null, null, 1, '请问，确定要删除当前行吗？',
                function () {
                    $self.parent().parent().remove();
                });
    },
    SetPageSize: function () {
        thisPage.FetchForPage(1);
        $.cookie("material_tolerance_type_list_pagesize", $("#page-size").val());
    }
};

//-----------------------------------------------------------------------------
// 页面初始化
//-----------------------------------------------------------------------------
function onPageReady() {
    $("#page-size").val($.cookie("material_tolerance_type_list_pagesize") === undefined ? 15 : $.cookie("material_tolerance_type_list_pagesize"));
    
    $("#wrapper__navbar").swPagination({
        link_string: '/?page={page_number}',
        max_page: null,
        paged: function (page) {
            $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page", page);
            thisPage.FetchForPage(page);
        }
    });

    thisPage.OnPageLoad();
}

// 画面大小或者位置移动
function onPageResize() {
    over = 1;
}

//-----------------------------------------------------------------------------
// 验证函数
//-----------------------------------------------------------------------------
//验证输入
function CheckGridInput() {
    $('#tabData01 tbody').find("tr").each(function () {
        var $row = $(this);
        var _TypeNo = $.trim($(this).find('td').eq(1).text());     // 类型编号
        var _TypeName = $.trim($(this).find('td').eq(2).text());   // 类型名

        if (_TypeNo === '') {
            GridCheckErrHandle($row, 1, '请输编号。');
        } else {
            GridCheckSuccessHandle($row, 1);
        }

        if (_TypeName === '') {
            GridCheckErrHandle($row, 2, '请输入类型名。');
        } else {
            GridCheckSuccessHandle($row, 2);
        }
    });
    if ($('#tabData01 tbody').find('td.error').length > 0) {
        ShowErrorMessagePanel('对不起，填写的数据有错误。');
        return false;
    } else {
        return true;
    }
}
function GridCheckErrHandle($row, index, errMsg) {
    $row.find('td').eq(index).addClass("error");
    $row.find('td').eq(index).attr('title', errMsg);
}
function GridCheckSuccessHandle($row, index) {
    $row.find('td').eq(index).removeClass("error");
    $row.find('td').eq(index).attr('title', '');
}